<html xmlns="http://www.w3.org/1999/xhtml"  
      xmlns:h="http://java.sun.com/jsf/html"  
      xmlns:f="http://java.sun.com/jsf/core"  
      xmlns:p="http://primefaces.org/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets"> 

    <ui:composition template="../index.xhtml">
        <ui:define name="conteudo">
            <h:form id="tituloPagina">
                <h:outputText value="Cadastro de clientes"/>
            </h:form>
            <h:form id="formTabela">
                <p:growl/>
                <p:dataTable id="listContasPagar" var="forn" value="#{clienteControler.listCliente}" widgetVar="carsTableAtivos" 
                             rowKey="#{forn.id}" selectionMode="single"  emptyMessage="Nenhum registro foi encontrado!" paginator="true" rows="10" rowsPerPageTemplate="5,10,15,#{clienteControler.listCliente.size()}">
                    <f:facet name="header" >  
                        <p:outputPanel>  
                            <h:outputText value="Busca padrão" />
                            <p:inputText id="globalFilter" onkeyup="carsTableAtivos.filter()" style="width:150px" /> 
                            <p:commandButton value="Novo" accesskey="N" onclick="dlgCliente.show()" action="#{clienteControler.inicializaObj()}" update=":formAdd"/>
                        </p:outputPanel>  
                    </f:facet>  
                    <p:column headerText="Ações" footerText="Ações" filterMatchMode="Ações" style="width: 60px;">  
                        <p:commandButton action="#{clienteControler.setCliente(forn)}" onclick="dlgCliente.show();" update=":formAdd"
                                         image="ui-icon ui-icon-pencil" title="alterar" />
                        <p:commandButton image="ui-icon ui-icon-close" title="excluir" 
                                         actionListener="#{clienteControler.setCliente(forn)}" onclick="confirmationExcluircliente.show();"/>
                    </p:column>
                    <p:column filterBy="${forn.nome}" headerText="Nome" footerText="Nome" sortBy="#${forn.nome}">    
                        <h:outputText value="${forn.nome}" />  
                    </p:column> 
                    <p:column filterBy="${forn.fone1}" headerText="Telefone" footerText="Telefone" sortBy="#${forn.fone1}">    
                        <h:outputText value="${forn.fone1}" title="#{forn.fone2} - #{forn.celular}" />  
                    </p:column> 
                    <p:column filterBy="${forn.cpfCnpj}" headerText="CPF" footerText="CPF" sortBy="${forn.cpfCnpj}">  
                        <h:outputText value="${forn.cpfCnpj}"/>
                    </p:column>  
                </p:dataTable>
            </h:form>
            <p:dialog id="dialogFunc" header="Novo cliente" widgetVar="dlgCliente" modal="true" resizable="false" appendToBody="true">  
                <h:form id="formAdd">
                    <p:messages id="msg"/>
                    <h:inputHidden value="#{clienteControler.cliente.id}"/>
                    <h:panelGrid columns="4">

                        <h:panelGrid columns="1">
                            <h:outputText value="Código"/>
                            <p:inputText value="#{clienteControler.cliente.id}" disabled="true" id="idCliente"/>
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Tipo pessoa:"/>
                            <p:selectOneMenu value="#{clienteControler.cliente.tipoPessoa}" style="width: 150px;">
                                <f:selectItem itemLabel="Jurídica" itemValue="J" />
                                <f:selectItem itemLabel="Fisica" itemValue="F" />
                                <p:ajax event="change" update="formAdd"/>
                            </p:selectOneMenu>
                        </h:panelGrid>

                        <h:panelGrid columns="1" rendered="#{clienteControler.cliente.tipoPessoa.toString().equalsIgnoreCase('J')}">
                            <h:outputText value="CNPJ" id="cnpj" />
                            <p:inputMask mask="99.999.999/9999-99" title="Informe neste campo o cnpj do cliente" value="#{clienteControler.cliente.cpfCnpj}" id="inpcnpj" required="true" requiredMessage="O CNPJ é obrigatório">
                                <p:ajax event="blur" update="msg" listener="#{clienteControler.validaCpfCnpj()}"/>
                                <p:tooltip for="inpcnpj" showEvent="focus" hideEvent="blur" /> 
                            </p:inputMask>
                        </h:panelGrid>

                        <h:panelGrid columns="1" rendered="#{clienteControler.cliente.tipoPessoa.toString().equalsIgnoreCase('F')}">
                            <h:outputText value="CPF"  id="cpf"/>
                            <p:inputMask mask="999.999.999-99" title="Informe neste campo o cpf do cliente" id="inpcpf" value="#{clienteControler.cliente.cpfCnpj}" required="true" requiredMessage="O CPF é obrigatório">
                                <p:ajax event="blur" update="msg" listener="#{clienteControler.validaCpfCnpj()}"/>
                                <p:tooltip for="inpcpf" showEvent="focus" hideEvent="blur" /> 
                            </p:inputMask>
                        </h:panelGrid>

                        <h:panelGrid columns="1" rendered="#{clienteControler.cliente.tipoPessoa.toString().equalsIgnoreCase('J')}" >
                            <h:outputText value="Inscricão Estadual" id="ie"/>
                            <p:inputMask mask="99.999.999-9" title="Informe neste campo a inscrição estadual" id="inpie" value="#{clienteControler.cliente.inscricaoEstadual}" required="true" requiredMessage="A inscrição estadual é obrigatória"/>
                            <p:tooltip for="inpie" showEvent="focus" hideEvent="blur" /> 
                        </h:panelGrid>

                        <h:panelGrid columns="1" rendered="#{clienteControler.cliente.tipoPessoa.toString().equalsIgnoreCase('J')}">
                            <h:outputText value="Inscricão Municipal"  id="im"/>
                            <p:inputText  id="inpIM" title="Informe neste campo a Insrição Municipal do cliente" value="#{clienteControler.cliente.inscricaoMunicipal}" />
                            <p:tooltip for="inpIM" showEvent="focus" hideEvent="blur" /> 
                        </h:panelGrid>

                        <h:panelGrid columns="1" rendered="#{clienteControler.cliente.tipoPessoa.toString().equalsIgnoreCase('F')}">
                            <h:outputText value="RG"  id="rg"/>
                            <p:inputText value="#{clienteControler.cliente.rg}" title="Informe neste campo o RG do cliente" id="inprg" required="true" requiredMessage="O RG é obrigatório"/>
                            <p:tooltip for="inprg" showEvent="focus" hideEvent="blur" /> 
                        </h:panelGrid>

                        <h:panelGrid columns="1" rendered="#{clienteControler.cliente.tipoPessoa.toString().equalsIgnoreCase('J')}">
                            <h:outputText value="Razão Social"  id="rggg"/>
                            <p:inputText title="Informe neste campo a razão social do cliente" value="#{clienteControler.cliente.nome}" id="inprgs" required="true" requiredMessage="A Razão Social é obrigatório" />
                            <p:tooltip for="inprgs" showEvent="focus" hideEvent="blur" /> 
                        </h:panelGrid> 

                        <h:panelGrid columns="1" rendered="#{clienteControler.cliente.tipoPessoa.toString().equalsIgnoreCase('J')}">
                            <h:outputText value="Nome Fantasia"  id="rgg"/>
                            <p:inputText title="Informe neste campo o nome fantasia do cliente" value="#{clienteControler.cliente.fantasia}" id="inprgss" />
                            <p:tooltip for="inprgss" showEvent="focus" hideEvent="blur" /> 
                        </h:panelGrid>

                        <h:panelGrid columns="1" rendered="#{clienteControler.cliente.tipoPessoa.toString().equalsIgnoreCase('F')}">
                            <h:outputText value="Nome"  id="rgh"/>
                            <p:inputText title="Informe neste campo o nome do cliente" value="#{clienteControler.cliente.nome}" id="inprgd"  required="true" requiredMessage="O Nome é obrigatório" />
                            <p:tooltip for="inprgd" showEvent="focus" hideEvent="blur" /> 
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Situação Cliente:"/>
                            <p:selectOneMenu value="#{clienteControler.cliente.idSituacaoCliente.id}" style="width: 150px;">  
                                <f:selectItems value="#{situacaoClienteControler.listSituacao}" var="sit" itemValue="#{sit.id}" itemLabel="#{sit.nome}"/> 
                            </p:selectOneMenu>
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Email:"/>
                            <p:inputText value="#{clienteControler.cliente.email}" id="email" title="Informe neste campo o email do cliente"/>
                            <p:tooltip for="email" showEvent="focus" hideEvent="blur" /> 
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Telefone1:"/>
                            <p:inputMask mask="(99)9999-9999" value="#{clienteControler.cliente.fone1}" id="fone1" title="Informe neste campo um telefone do cliente"/>
                            <p:tooltip for="fone1" showEvent="focus" hideEvent="blur" /> 
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Telefone2:"/>
                            <p:inputMask mask="(99)9999-9999" value="#{clienteControler.cliente.fone2}" id="fone2" title="Informe neste campo um telefone do cliente"/>
                            <p:tooltip for="fone2" showEvent="focus" hideEvent="blur" /> 
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Celular:"/>
                            <p:inputMask mask="(99)9999-9999" value="#{clienteControler.cliente.celular}" id="celular" title="Informe neste campo o celular do cliente"/>
                            <p:tooltip for="celular" showEvent="focus" hideEvent="blur" /> 
                        </h:panelGrid>

                        <h:panelGrid columns="1" rendered="#{clienteControler.cliente.tipoPessoa.toString().equalsIgnoreCase('F')}">
                            <h:outputText value="Data de Nascimento:" />
                            <p:calendar value="#{clienteControler.cliente.dataNascimento}"  showOn="button" id="dataNascimento" title="Informe neste campo a data de nascimento do cliente">
                                <f:convertDateTime pattern="dd/MM/yyyy"/>
                                <p:tooltip for="dataNascimento" showEvent="focus" hideEvent="blur" />
                            </p:calendar>
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Cep:"/>
                            <p:inputMask mask="99999-999" value="#{clienteControler.cliente.cep}" id="cep" title="Informe neste campo o cep do cliente"/>
                            <p:tooltip for="cep" showEvent="focus" hideEvent="blur" /> 
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Logradouro:"/>
                            <p:inputText value="#{clienteControler.cliente.logradouro}" id="logradouro" title="informe neste campo o logradouro do cliente"/>
                            <p:tooltip for="logradouro" showEvent="focus" hideEvent="blur" /> 
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Número:"/>
                            <p:inputText value="#{clienteControler.cliente.numero}" id="numero" title="Informe neste campo o número do endereço do cliente"/> 
                            <p:tooltip for="numero" showEvent="focus" hideEvent="blur" /> 
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Bairro:"/>
                            <p:inputText value="#{clienteControler.cliente.bairro}" id="bairro" title="Informe neste campo o bairro do cliente"/>
                            <p:tooltip for="bairro" showEvent="focus" hideEvent="blur" /> 
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Estado: "/>
                            <p:selectOneMenu value="#{clienteControler.cliente.idCidade.estado}" style="width: 150px;">
                                <f:selectItems value="#{clienteControler.retornaEstados()}" var="estado" itemValue="#{estado}" itemLabel="#{estado}"/> 
                                <p:ajax event="change" update="cidade" listener="#{clienteControler.carregaCidades()}"/>
                            </p:selectOneMenu>
                        </h:panelGrid>

                        <h:panelGrid columns="1">
                            <h:outputText value="Cidade: "/>
                            <p:selectOneMenu value="#{clienteControler.cliente.idCidade.id}" id="cidade" style="width: 150px;">
                                <f:selectItem itemValue="0" itemLabel="Selecione"/>
                                <f:selectItems value="#{clienteControler.listCidades}" var="cid" itemValue="#{cid.id}" itemLabel="#{cid.cidade}"/> 
                            </p:selectOneMenu>
                        </h:panelGrid>
                    </h:panelGrid>
                    <h:panelGrid columns="3">
                        <p:commandButton value="Salvar" accesskey="S" action="#{clienteControler.salvar()}" update="formAdd :formTabela" onclick="statusDialog.show();" onsuccess="statusDialog.hide();"/>
                        <p:commandButton value="Novo" accesskey="N" update=":formAdd" action="#{clienteControler.inicializaObj()}" process="@this"/>
                        <p:commandButton value="Cancelar" accesskey="C" onclick="dlgCliente.hide()" process="@this"/>
                    </h:panelGrid>
                </h:form>
                <!-- confirmações  de exclusão-->
                <h:form>
                    <p:confirmDialog id="confirmDialog" message="Confirma excluir o cliente?" appendToBody="true"
                                     header="Atenção!!!" severity="alert" widgetVar="confirmationExcluircliente" >  
                        <p:commandButton id="confirm" value="Sim" oncomplete="confirmationExcluircliente.hide()"  
                                         actionListener="#{clienteControler.excluir()}" update=":formTabela"/>  
                        <p:commandButton id="decline" value="Cancelar" onclick="confirmationExcluircliente.hide()" type="button" />   
                    </p:confirmDialog>
                </h:form>
            </p:dialog>
        </ui:define>
    </ui:composition>
</html>